From 30fa06feac15609fe99657e02d171e024e825322 Mon Sep 17 00:00:00 2001 From: sergio <33748103+colado@users.noreply.github.com> Date: Mon, 29 Dec 2025 23:45:36 +0200 Subject: feat(mobile): create new list edit screen (#2310) * feat(mobile): create new edit screen and path * refactor(mobile): use correct import for back navigation * refactor(mobile): remove set state for list type * feat(mobile): handle loading state * feat(mobile): add error handling * feat(mobile): add local validation for empty list name * refactor(mobile): use correct param name in edit path * feat(mobile): handle all pending state cases * refactor(mobile): remove unnecessary return * refactor(mobile): move type validation to top of the file * refactor(mobile): revert validation order * refactor(mobile): clean up submit values * fix(mobile): fix button views --- apps/mobile/app/dashboard/lists/[slug].tsx | 135 ----------------------------- 1 file changed, 135 deletions(-) delete mode 100644 apps/mobile/app/dashboard/lists/[slug].tsx (limited to 'apps/mobile/app/dashboard/lists/[slug].tsx') diff --git a/apps/mobile/app/dashboard/lists/[slug].tsx b/apps/mobile/app/dashboard/lists/[slug].tsx deleted file mode 100644 index e7aab443..00000000 --- a/apps/mobile/app/dashboard/lists/[slug].tsx +++ /dev/null @@ -1,135 +0,0 @@ -import { Alert, Platform, View } from "react-native"; -import * as Haptics from "expo-haptics"; -import { router, Stack, useLocalSearchParams } from "expo-router"; -import UpdatingBookmarkList from "@/components/bookmarks/UpdatingBookmarkList"; -import FullPageError from "@/components/FullPageError"; -import CustomSafeAreaView from "@/components/ui/CustomSafeAreaView"; -import FullPageSpinner from "@/components/ui/FullPageSpinner"; -import { api } from "@/lib/trpc"; -import { MenuView } from "@react-native-menu/menu"; -import { Ellipsis } from "lucide-react-native"; - -import { ZBookmarkList } from "@karakeep/shared/types/lists"; - -export default function ListView() { - const { slug } = useLocalSearchParams(); - if (typeof slug !== "string") { - throw new Error("Unexpected param type"); - } - const { - data: list, - error, - refetch, - } = api.lists.get.useQuery({ listId: slug }); - - return ( - - ( - - ), - }} - /> - {error ? ( - refetch()} /> - ) : list ? ( - - - - ) : ( - - )} - - ); -} - -function ListActionsMenu({ - listId, - role, -}: { - listId: string; - role: ZBookmarkList["userRole"]; -}) { - const { mutate: deleteList } = api.lists.delete.useMutation({ - onSuccess: () => { - router.replace("/dashboard/lists"); - }, - }); - - const { mutate: leaveList } = api.lists.leaveList.useMutation({ - onSuccess: () => { - router.replace("/dashboard/lists"); - }, - }); - - const handleDelete = () => { - Alert.alert("Delete List", "Are you sure you want to delete this list?", [ - { text: "Cancel", style: "cancel" }, - { - text: "Delete", - onPress: () => { - deleteList({ listId }); - }, - style: "destructive", - }, - ]); - }; - - const handleLeave = () => { - Alert.alert("Leave List", "Are you sure you want to leave this list?", [ - { text: "Cancel", style: "cancel" }, - { - text: "Leave", - onPress: () => { - leaveList({ listId }); - }, - style: "destructive", - }, - ]); - }; - - return ( - { - if (nativeEvent.event === "delete") { - handleDelete(); - } - if (nativeEvent.event === "leave") { - handleLeave(); - } - }} - shouldOpenOnLongPress={false} - > - Haptics.selectionAsync()} color="gray" /> - - ); -} -- cgit v1.3-1-g0d28